#include"Sort.h"

void CopyArr(int* aa, int* a,int n) {
	for (int i = 0; i < n; i++) {
		aa[i] = a[i];
	}
}

int main() {
	int N = 15;
	int sz = N;
    srand((unsigned int)time(NULL));

	int* a = (int*)malloc(sizeof(int) * N);
	int* aa = (int*)malloc(sizeof(int) * N);
	initArr(a, sz);
	CopyArr(aa, a, sz);
	
	


	printf("BubbleSort:\n");
	Print_Arr(a, sz); 
	BubbleSort(a, sz);
	Print_Arr(a, sz);
	CopyArr(a, aa, sz);

	printf("HeapSort:\n");
	Print_Arr(a, sz);
	HeapSort(a, sz);
	Print_Arr(a, sz);
	CopyArr(a, aa, sz);

	printf("InsertSort:\n");
	Print_Arr(a, sz);
	InsertSort(a, sz);
	Print_Arr(a, sz); 
	CopyArr(a, aa, sz);

	printf("SelectSort:\n");
	Print_Arr(a, sz);
	SelectSort(a, sz);
	Print_Arr(a, sz);
	CopyArr(a, aa, sz);

	printf("ShellSort:\n");
	Print_Arr(a, sz);
	ShellSort(a, sz);
	Print_Arr(a, sz);
	CopyArr(a, aa, sz);

	printf("QuickSort:\n");
	Print_Arr(a, sz);
	QuickSort(a, 0,sz - 1);
	Print_Arr(a, sz);
	CopyArr(a, aa, sz);

	printf("QuickSortNonRecursion:\n");
	Print_Arr(a, sz);
	QuickSortNonRecursion(a, 0, sz - 1);
	Print_Arr(a, sz);
	CopyArr(a, aa, sz);

	printf("CountSort:\n"); 
	Print_Arr(a, sz);   
	CountSort(a, sz);     
	Print_Arr(a, sz); 
	CopyArr(a, aa, sz);

	printf("MergeSort:\n");
	Print_Arr(a, sz); 
	MergeSort(a, 0, sz - 1);
	Print_Arr(a, sz); 
	CopyArr(a, aa, sz);

	printf("MergeSortNonRecursion:\n");
	Print_Arr(a, sz);
	MergeSortNonRecursion(a, 0, sz - 1);      
	Print_Arr(a, sz);
	CopyArr(a, aa, sz);


	return 0;
}